/**
 * @author : HESS MArjorie, THUILLIER Jules, G4 - CIP2
 */
package linkTreeInterface;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;

import ArbreBinaire.ArbreBinaire;
import ArbreBinaire.ArbreVideException;

public class FileAccess {
	
	private String fileName;
	
	public FileAccess(String name){
		this.fileName = name;
	}
	
	public boolean addWord(){
		//Return false si le mot est d�j� rentr�
		return false;
	}
	
	
	/**
	 * Rôle : importe un fichier txt et ajoute les mots dans l'arbre binaire
	 * @param file, le chemin du fichier choisi
	 */
	public static void importFile(String file){
		try{
			  FileInputStream fstream = new FileInputStream(file);
	
			  DataInputStream in = new DataInputStream(fstream);
			  BufferedReader br = new BufferedReader(new InputStreamReader(in));
			  String strLine;
			  // On lit le fichier ligne par ligne
			  while ((strLine = br.readLine()) != null)   {
				 //On split la ligne pour récupérer le mot français et le mot anglais
				  String str[]=strLine.split(":");
				  // On ajoute chaque mot
				  UserInterface.Main.arbreBinaire = UserInterface.Main.arbreWord.ajouterEnFeuilleR(UserInterface.Main.arbreBinaire, new Word(str[0], str[1]));
			  } 
			  in.close();
			    }catch (Exception e){
			  new UserInterface.ErrorDialog("Error: " + e.getMessage());
			  }
	}
	
	/**
	 * Rôle : exporte l'arbre contenant tous les mots dans un fichier
	 * @param file, le chemin sélectionné pour l'export
	 */
	public static void exportFile(String file){
		try{
			  FileWriter fstream = new FileWriter(file);
			  BufferedWriter out = new BufferedWriter(fstream);
			  
			  out.write(readTreeRec(UserInterface.Main.arbreBinaire));
			  
			  
			  //On ferme le fichier 
			  out.close();
			  }catch (Exception e){
			  System.err.println("Error: " + e.getMessage());
			  }
		
	}
	
	/**
	 * Rôle : lit l'arbre de manière récursive
	 * @param a, l'arbre contenant les mots
	 */
	public static String readTreeRec(ArbreBinaire<Word> a) throws ArbreVideException{
		if (a.estVide()) return null;
		
			return  a.valeur()+ readTreeRec(a.sag()) + readTreeRec(a.sad());

	}
	
}
